package data_structure


// Range 类是一种特殊的、带索引的不可变数字等差序列，其包含的值为从给定起点按一定步长增大（减小）到指定终点的所有数值。
object TestRange {

  def main(args: Array[String]): Unit = {
    // 直接使用Range类的构造器
    // 第一个参数为起点，第二个参数为终点（终点本身不会被包含在创建得到的Range对象内），最后一个参数为步长

    val r = new Range.Inclusive(1, 5, 1)
    println(s"r: ${r}")
    // 使用从0开始的索引访问元素
    println(s"r 第3个元素：${r(2)}")
    // 使用start和end成员变量访问其起点和终点
    println(s"r 第一个元素：${r.start}, 最后一个元素: ${r.end}")
    val r1 = new Range.Exclusive(2, 6, 2)
    println(s"r: ${r1}")

    // 使用数值类型的to方法，这种方法经常使用在for语句中
    // 1 to 5 生成包含1到5的Range；
    // 1 until 5 生成不包括区间终点的Range，即 包含1到4
    // 1 to 5 by 2 生成1、3和5的Range
    // 支持Range的类型包括Int、Long、Char、BigInt、BigDecimal等

  }

}
